package chap_01_CompletableFuture.step_01_FutureTask;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @Description FutureTask 的实战使用学习
 * @Author shihan
 * @Date 2022/9/3 15:43
 * @Version 1.0
 */
public class FutureTaskStudy_01 {

    public static void main(String[] args) throws ExecutionException, InterruptedException {

        // 1、创建待执行的异步任务（匿名实现-->lambda表达式 简化 Callable 有返回值的线程类创建）
        String arg = "abc";
        FutureTask<String> futureTask = new FutureTask<>(() -> returnSomething(arg));

        // 2、多线程异步执行
        new Thread(futureTask, "t1").start();

        // 3、阻塞获取异步任务的执行结果
        System.out.println("获取到异步任务的执行结果：" + futureTask.get());
    }

    private static String returnSomething(String arg) {
        System.out.println("异步任务处理..." + arg);
        return "hello world! " + arg;
    }

}
